export default {
  install(Vue) {
    Vue.prototype.$wxpay = {

      wxpay(obj) {
        // 检测支付环境中的 WeixinJSBridge
        if (typeof WeixinJSBridge == "undefined") {
          if (document.addEventListener) {
            document.addEventListener('WeixinJSBridgeReady', function() {
              return this.onBridgeReady(obj)
            }, false)
          } else if (document.attachEvent) {
            document.attachEvent('WeixinJSBridgeReady', function() {
              return this.onBridgeReady(obj)
            })
            document.attachEvent('onWeixinJSBridgeReady', function() {
              return this.onBridgeReady(obj)
            })
          }
        } else {
          return this.onBridgeReady(obj)
        }
      },
      onBridgeReady(obj) {
        return new Promise(function(resolve, reject) {
          WeixinJSBridge.invoke('getBrandWCPayRequest', obj,
            function(res) {
              if (res.err_msg == "get_brand_wcpay_request:ok") {
                // 使用以上方式判断前端返回,微信团队郑重提示：
                // res.err_msg 将在用户支付成功后返回 ok，但并不保证它绝对可靠。
                resolve(res)
              }
              if (res.err_msg == "get_brand_wcpay_request:cancel") {
                // 支付过程中用户取消
                reject(res)
              }
              if (res.err_msg == "get_brand_wcpay_request:fail") {
                // 支付失败
                reject(res)
              }
            }
          )
        })
      },

    }
  }
}
